<?php

/**
 * @version $Id: sef.php,v 1.2 2005/12/03 16:17:14 soeren Exp $
 * @package Joomla
 * @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
 * Joomla! is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * See COPYRIGHT.php for copyright notices and details.
 */
// no direct access
defined('_VALID_MOS') or die('Restricted access');

global $mosConfig_sef, $mosConfig_absolute_path;

// include sef extention
include_once $mosConfig_absolute_path . '/administrator/components/com_sef/sef.class.php';
include_once $mosConfig_absolute_path . '/administrator/components/com_sef/config.sef.php';
include_once $mosConfig_absolute_path . '/components/com_sef/sef404.php';

if ($mosConfig_sef) {
    $url_array = explode("/", $_SERVER['REQUEST_URI']);
    /**
     * Content
     * http://www.domain.com/$option/$task/$sectionid/$id/$Itemid/$limit/$limitstart
     */
    if (in_array("content", $url_array)) {

        $uri = explode("content/", $_SERVER['REQUEST_URI']);
        $option = "com_content";
        $_GET['option'] = $option;
        $_REQUEST['option'] = $option;
        $pos = array_search("content", $url_array);

        // language hook for content
        $lang = "";
        foreach ($url_array as $key => $value) {
            if (!strcasecmp(substr($value, 0, 5), "lang,")) {
                $temp = explode(",", $value);
                if (isset($temp[0]) && $temp[0] != "" && isset($temp[1]) && $temp[1] != "") {
                    $_GET['lang'] = $temp[1];
                    $_REQUEST['lang'] = $temp[1];
                    $lang = $temp[1];
                }
                unset($url_array[$key]);
            }
        }

        // $option/$task/$sectionid/$id/$Itemid/$limit/$limitstart
        if (isset($url_array[$pos + 6]) && $url_array[$pos + 6] != "") {
            $task = $url_array[$pos + 1];
            $sectionid = $url_array[$pos + 2];
            $id = $url_array[$pos + 3];
            $Itemid = $url_array[$pos + 4];
            $limit = $url_array[$pos + 5];
            $limitstart = $url_array[$pos + 6];
            $_GET['task'] = $task;
            $_REQUEST['task'] = $task;
            $_GET['sectionid'] = $sectionid;
            $_REQUEST['sectionid'] = $sectionid;
            $_GET['id'] = $id;
            $_REQUEST['id'] = $id;
            $_GET['Itemid'] = $Itemid;
            $_REQUEST['Itemid'] = $Itemid;
            $_GET['limit'] = $limit;
            $_REQUEST['limit'] = $limit;
            $_GET['limitstart'] = $limitstart;
            $_REQUEST['limitstart'] = $limitstart;

            $QUERY_STRING = "option=com_content&task=$task&sectionid=$sectionid&id=$id&Itemid=$Itemid&limit=$limit&limitstart=$limitstart";
            // $option/$task/$id/$Itemid/$limit/$limitstart
        } else if (isset($url_array[$pos + 5]) && $url_array[$pos + 5] != "") {
            $task = $url_array[$pos + 1];
            $id = $url_array[$pos + 2];
            $Itemid = $url_array[$pos + 3];
            $limit = $url_array[$pos + 4];
            $limitstart = $url_array[$pos + 5];
            $_GET['task'] = $task;
            $_REQUEST['task'] = $task;
            $_GET['id'] = $id;
            $_REQUEST['id'] = $id;
            $_GET['Itemid'] = $Itemid;
            $_REQUEST['Itemid'] = $Itemid;
            $_GET['limit'] = $limit;
            $_REQUEST['limit'] = $limit;
            $_GET['limitstart'] = $limitstart;
            $_REQUEST['limitstart'] = $limitstart;

            $QUERY_STRING = "option=com_content&task=$task&id=$id&Itemid=$Itemid&limit=$limit&limitstart=$limitstart";
            // $option/$task/$sectionid/$id/$Itemid
        } else if (!(isset($url_array[$pos + 5]) && $url_array[$pos + 5] != "") && isset($url_array[$pos + 4]) && $url_array[$pos + 4] != "") {
            $task = $url_array[$pos + 1];
            $sectionid = $url_array[$pos + 2];
            $id = $url_array[$pos + 3];
            $Itemid = $url_array[$pos + 4];
            $_GET['task'] = $task;
            $_REQUEST['task'] = $task;
            $_GET['sectionid'] = $sectionid;
            $_REQUEST['sectionid'] = $sectionid;
            $_GET['id'] = $id;
            $_REQUEST['id'] = $id;
            $_GET['Itemid'] = $Itemid;
            $_REQUEST['Itemid'] = $Itemid;

            $QUERY_STRING = "option=com_content&task=$task&sectionid=$sectionid&id=$id&Itemid=$Itemid";
            // $option/$task/$id/$Itemid
        } else if (!(isset($url_array[$pos + 4]) && $url_array[$pos + 4] != "") && (isset($url_array[$pos + 3]) && $url_array[$pos + 3] != "")) {
            $task = $url_array[$pos + 1];
            $id = $url_array[$pos + 2];
            $Itemid = $url_array[$pos + 3];
            $_GET['task'] = $task;
            $_REQUEST['task'] = $task;
            $_GET['id'] = $id;
            $_REQUEST['id'] = $id;
            $_GET['Itemid'] = $Itemid;
            $_REQUEST['Itemid'] = $Itemid;

            $QUERY_STRING = "option=com_content&task=$task&id=$id&Itemid=$Itemid";
            // $option/$task/$id
        } else if (!(isset($url_array[$pos + 3]) && $url_array[$pos + 3] != "") && (isset($url_array[$pos + 2]) && $url_array[$pos + 2] != "")) {
            $task = $url_array[$pos + 1];
            $id = $url_array[$pos + 2];
            $_GET['task'] = $task;
            $_REQUEST['task'] = $task;
            $_GET['id'] = $id;
            $_REQUEST['id'] = $id;

            $QUERY_STRING = "option=com_content&task=$task&id=$id";
            // $option/$task
        } else if (!(isset($url_array[$pos + 2]) && $url_array[$pos + 2] != "") && (isset($url_array[$pos + 1]) && $url_array[$pos + 1] != "")) {
            $task = $url_array[$pos + 1];
            $_GET['task'] = $task;
            $_REQUEST['task'] = $task;

            $QUERY_STRING = "option=com_content&task=$task";
        }

        if ($lang != "") {
            $QUERY_STRING .= "&lang=$lang";
        }

        $_SERVER['QUERY_STRING'] = $QUERY_STRING;
        $REQUEST_URI = $uri[0] . "index.php?" . $QUERY_STRING;
        $_SERVER['REQUEST_URI'] = $REQUEST_URI;
    }

    /*
      Components
      http://www.domain.com/component/$name,$value
     */
    if (in_array("component", $url_array)) {

        $uri = explode("component/", $_SERVER['REQUEST_URI']);
        $uri_array = explode("/", $uri[1]);
        $QUERY_STRING = "";

        foreach ($uri_array as $value) {
            $temp = explode(",", $value);
            if (isset($temp[0]) && $temp[0] != "" && isset($temp[1]) && $temp[1] != "") {
                $_GET[$temp[0]] = $temp[1];
                $_REQUEST[$temp[0]] = $temp[1];
                $QUERY_STRING .= $temp[0] == "option" ? "$temp[0]=$temp[1]" : "&$temp[0]=$temp[1]";
            }
        }

        $_SERVER['QUERY_STRING'] = $QUERY_STRING;
        $REQUEST_URI = $uri[0] . "index.php?" . $QUERY_STRING;
        $_SERVER['REQUEST_URI'] = $REQUEST_URI;
    }
    // Extract to globals
    while (list($key, $value) = each($_GET))
        $GLOBALS[$key] = $value;
}
?>